vp_raw <- read.csv("mega-veridicality-v2.csv")
emotion_raw <- read.csv("BRM-emot-submit.csv")
emotion_select <- select(emotion_raw, "Word", "V.Mean.Sum", "V.SD.Sum", "A.Mean.Sum", "A.SD.Sum")
vp_data <- select(vp_raw, "participant", "verb", "frame", "voice", "polarity", "conditional", "sentence", "veridicality", "acceptability", "exclude")

Norming valence mean to get positive and negative valence

emotion <- emotion_select %>%
  mutate(valence_scaled = scale(V.Mean.Sum))
word_list <- unique(emotion$Word)
# Need to filter by acceptability (see 2019 paper)
# Need to normalize by participants (2016 paper used "ordinal model-based normalization procedure")
vp_data <- vp_data %>%
  mutate(veridicality_num = ifelse(veridicality == "yes", 1, ifelse(veridicality == "no", -1, 0))) %>%
  filter(exclude == "False") %>%
  mutate(Word = verb) %>%
  filter(Word %in% word_list)

create relevant subset for veridicality ratings

example of items
Frame Voice Sentence
that_S active Someone cared that a particular thing happened. Did that thing happen?
that_S passive Someone was revolted that a particular thing happened. Did that thing happen?
to_VPeventive active A particular person loved to do a particular thing. Did that person do that thing?
to_VPeventive passive A particular person was seen to do a particular thing. Did that person do that thing?
to_VPstative active A particular person opted to have a particular thing. Did that person have that thing?
to_VPstative passive A particular person was inspired to have a particular thing. Did that person have that thing?
for_NP_to_VP active Someone pressed for a particular thing to happen. Did that thing happen?
for_NP_to_VP passive N/A
NP_to_VPeventive active Someone contracted a particular person to do a particular thing. Did that person have that thing?
NP_to_VPeventive passive N/A
NP_to_VPstative active Someone badgered a particular person to have a particular thing. Did that person have that thing?
NP_to_VPstative passive N/A
# the White paper (2016) uses only observations with case "that_S" to calculate veridicality, not sure if this is important
veridicality_filter <- vp_data %>%
  filter(polarity == "positive" & conditional == "False") %>%
  group_by(Word)
  
veridicality_ratings <- veridicality_filter %>%
  multi_boot_standard(col = "veridicality_num") %>%
  mutate(veridicality_mean = mean, YMin = mean - ci_lower, YMax = mean + ci_upper) %>%
  ungroup(Word) %>%
  mutate(Word = fct_reorder(as.factor(Word), mean))

veridicality <- merge(veridicality_ratings, emotion, by = "Word", all.x = TRUE) 
veridicality <- veridicality %>%
  rename(valence_mean = valence_scaled, arousal_mean = A.Mean.Sum, valence_SD = V.SD.Sum, arousal_SD = A.SD.Sum) %>%
  mutate(valence_group = ifelse(valence_mean < 0, "negative", "positive"))

ggplot(data = veridicality, aes(x = valence_mean, y = veridicality_mean, colour = valence_group, label = Word)) +
  #geom_point(width = .3,height = .025) +
  geom_label() + 
  geom_smooth(method = 'lm')

ggplot(data = veridicality, aes(x = arousal_mean, y = veridicality_mean, colour = valence_group, label = Word)) +
  #geom_point(width = .3,height = .025) + 
  facet_grid(~valence_group) +
  geom_label() + 
  geom_smooth(method = 'lm')

veridicality$relativeValence = abs(veridicality$valence_mean)
m = lm(mean ~ relativeValence + arousal_mean, data = veridicality)
summary(m)
## 
## Call:
## lm(formula = mean ~ relativeValence + arousal_mean, data = veridicality)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.41820 -0.21724 -0.01319  0.28322  0.59013 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      0.426279   0.066204   6.439 2.35e-10 ***
## relativeValence  0.002703   0.024926   0.108    0.914    
## arousal_mean    -0.003015   0.016361  -0.184    0.854    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3604 on 647 degrees of freedom
## Multiple R-squared:  5.487e-05,  Adjusted R-squared:  -0.003036 
## F-statistic: 0.01775 on 2 and 647 DF,  p-value: 0.9824

create relevant subset for projectivity ratings

examples of items:
Frame Voice Valence Sentence Note
that_S active positive If John didn’t find that a particular thing happened, did that thing happen? arousal low, projectivity low
that_S passive negative If John wasn’t scared that a particular thing happened, did that thing happen? arousal high, projectivity high
that_S active positive If John didn’t discover that a particular thing happened, did that thing happen? outlier: arousal high, projectivity low
that_S passive positive If John wasn’t jarred that a particular thing happened, did that thing happen? outlier: arousal low, projectivity high
that_S active negative If John didn’t resent that a particular thing happened, did that thing happen? outlier: arousal low, projectivity high
that_S passive negative If John wasn’t tricked that a particular thing happened, did that thing happen? outlier: arousal high, projectivity low
projectivity_filter <- vp_data %>%
  filter(polarity == "negative" & conditional == "True") %>%
  group_by(Word)

projectivity_ratings <- projectivity_filter %>%
  multi_boot_standard(col = "veridicality_num") %>%
  mutate(projectivity_mean = mean, YMin = mean - ci_lower, YMax = mean + ci_upper) %>%
  ungroup(Word) %>%
  mutate(Word = fct_reorder(as.factor(Word), mean))

projectivity <- merge(projectivity_ratings, emotion, by = "Word", all.x = TRUE) 

projectivity <- projectivity %>%
  rename(valence_mean = valence_scaled, arousal_mean = A.Mean.Sum, valence_SD = V.SD.Sum, arousal_SD = A.SD.Sum) %>%
  mutate(valence_group = ifelse(valence_mean < 0, "negative", "positive"))

ggplot(data = projectivity, aes(x = valence_mean, y = projectivity_mean, colour = valence_group, label = Word)) +
  #geom_point(width = .3,height = .025) +
  geom_label() +
  geom_smooth(method = 'lm')

ggplot(data = projectivity, aes(x = arousal_mean, y = projectivity_mean, colour = valence_group, label = Word)) +
  #geom_point(width = .3,height = .025) + 
  facet_grid(~valence_group) +
  geom_label() +
  geom_smooth(method = 'lm')

projectivity against arousal_mean, by valence_bins

projectivity_neg <- projectivity %>%
  filter(valence_group == "negative")
projectivity_neg <-projectivity_neg[order(projectivity_neg$valence_mean),]
projectivity_neg[c("valence_bin")] <- 0
sep_neg = nrow(projectivity_neg) / 3 # 63.66667
for (i in 1:nrow(projectivity_neg)) {
  if (i <= sep_neg) {
    projectivity_neg[i, "valence_bin"] <- "very negative" #contains 63 items
  } else if (i <= 2 * sep_neg) {
    projectivity_neg[i, "valence_bin"] <- "moderately negative" # contains 64 items
  } else {
    projectivity_neg[i, "valence_bin"] <- "slightly negative" # contains 64 items
  }
}

projectivity_pos <- projectivity %>%
  filter(valence_group == "positive")
projectivity_pos <-projectivity_pos[order(projectivity_pos$valence_mean),]
projectivity_pos[c("valence_bin")] <- 0
sep_pos = nrow(projectivity_pos) / 3 # 77.3333
for (i in 1:nrow(projectivity_pos)) {
  if (i <= sep_pos) {
    projectivity_pos[i, "valence_bin"] <- "slightly positive" # contains 77 items 
  } else if (i <= 2 * sep_pos) {
    projectivity_pos[i, "valence_bin"] <- "moderately positive" # contains 77 items
  } else {
    projectivity_pos[i, "valence_bin"] <- "very positive" # contains 78 items
  }
}

projectivity_bin <- rbind(projectivity_neg, projectivity_pos)
projectivity_bin$valence_bin_f = factor(projectivity_bin$valence_bin, levels=c("very negative", "moderately negative", "slightly negative", "slightly positive", "moderately positive", "very positive"))
ggplot(data = projectivity_bin, aes(x = arousal_mean, y = mean, colour = valence_bin_f, label = Word)) +
  #geom_point(width = .3,height = .025) + 
  facet_grid(~valence_bin_f) +
  geom_label() +
  geom_smooth(method = 'lm')

projectivity$relativeValence = abs(projectivity$valence_mean)
m = lm(mean ~ relativeValence + arousal_mean, data = projectivity)
summary(m)
## 
## Call:
## lm(formula = mean ~ relativeValence + arousal_mean, data = projectivity)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.80637 -0.19107 -0.02518  0.16959  0.86177 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -0.20776    0.06488  -3.202 0.001467 ** 
## relativeValence  0.18335    0.02382   7.698 9.96e-14 ***
## arousal_mean     0.06102    0.01609   3.792 0.000172 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2791 on 420 degrees of freedom
## Multiple R-squared:  0.2188, Adjusted R-squared:  0.215 
## F-statistic:  58.8 on 2 and 420 DF,  p-value: < 2.2e-16
projectivity_ratings_participant <- projectivity_filter

projectivity_participant <- merge(projectivity_ratings_participant, emotion, by = "Word", all.x = TRUE) 
projectivity_participant <- projectivity_participant %>%
  rename(valence_mean = valence_scaled, arousal_mean = A.Mean.Sum, valence_SD = V.SD.Sum, arousal_SD = A.SD.Sum) %>%
  mutate(valence_group = ifelse(valence_mean < 0, "negative", "positive"))

projectivity_participant$relativeValence = abs(projectivity_participant$valence_mean)
m = lmer(veridicality_num ~ arousal_mean * relativeValence + (1 | participant) + (1 | Word), data = projectivity_participant)
summary(m)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## veridicality_num ~ arousal_mean * relativeValence + (1 | participant) +  
##     (1 | Word)
##    Data: projectivity_participant
## 
## REML criterion at convergence: 6062.6
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.7903 -0.5219 -0.0759  0.5784  3.6057 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Word        (Intercept) 0.05401  0.2324  
##  participant (Intercept) 0.04782  0.2187  
##  Residual                0.18567  0.4309  
## Number of obs: 4450, groups:  Word, 423; participant, 160
## 
## Fixed effects:
##                               Estimate Std. Error t value
## (Intercept)                  -0.159031   0.121447  -1.309
## arousal_mean                  0.047661   0.028731   1.659
## relativeValence               0.147523   0.105514   1.398
## arousal_mean:relativeValence  0.008049   0.022795   0.353
## 
## Correlation of Fixed Effects:
##             (Intr) arsl_m rltvVl
## arousal_men -0.969              
## relativVlnc -0.810  0.766       
## arsl_mn:rlV  0.844 -0.838 -0.975